import os
import sqlite3

import pandas as pd

filename = "зсш"
sheet_name = "main"
required_columns = (
    "Фамилия получателя", "Имя получателя", 
    "Отчество получателя", "Серия документа",
    "Номер документа", "Дата выдачи",
    "Дата рождения получателя"
)

if (not os.path.isfile(f"{filename}.xlsx")):
    raise FileNotFoundError(f"Не найден файл '{filename}.xlsx'")

if os.path.isfile(f"{filename}.db"):
    print(
        f"Файл '{filename}.db' уже существует. Хотите его удалить и создать вместо него новый (да/нет): "
    )

    ans = input()
    if ans == "да":
        os.remove(f"{filename}.db")
    elif ans not in ("да", "нет"):
        raise ValueError("Неверный ввод. Вы должны выбрать между да и нет")

con = sqlite3.connect(f"{filename}.db")

try:
    wb = pd.read_excel(f"{filename}.xlsx", sheet_name=sheet_name)
except ValueError:
    raise ValueError(f"Лист '{sheet_name}' не найден. Пожалуйста, переместите все данные в лист '{sheet_name}'")

if not all([column in wb.columns for column in required_columns]):
    raise ValueError(
        """В '{0}.xlsx' нет необходимых колонок (заголовков)
{1}.
Пожалуйста, проверьте написание и поправьте ошибки в заголовках""".format(
        filename, "\n".join(required_columns)
        )
    )

wb.to_sql(sheet_name, con, index=False)

con.commit()
con.close()

input("Нажмите любую клавишу, чтобы выйти...")    # Sorry, but required for console executable file.

